-- 创建云文件系统的数据库
create database if not exists cloudfs;

-- 删除数据库
drop database if exists cloudfs;

-- 创建云文件系统的数据库
create database if not exists cloudfs;

-- 查看当前所有的数据库
show databases;

-- 使用数据库
use cloudfs;

-- 创建用户表
-- 表中存有多个字段，每个字段都由字段名和数据类型以及约束组成
-- 常用约束： primary key 主键（唯一且非空）, unique(唯一)， not null(非空) ， foreign key（外键约束）
create table t_user(
    id integer primary key auto_increment,
    name varchar(50) comment '用户名',
    phone char(11) comment '手机号' unique,
    head varchar(100) comment '头像'
);

-- 查看表结构
desc t_user;

-- 查看所有的表
show tables;

-- 删除表
drop table if exists t_user_login;

-- 创建用户口令表（用户表的关联外表,关系 ：1 对 1）
-- constraint 添加约束的关键字 ,  user_id_fk约束名称
-- foreign key(user_id) 表示针对当前表的哪一个字段添加外键约束
-- references 此字段的值引用哪一个表的哪一个字段
create table t_user_login(
  user_id integer ,
  auth_string varchar(256),
  constraint user_id_fk foreign key(user_id) references t_user(id)
);

-- 向表中添加数据
insert into t_user(name, phone) values ('disen', '17791692095');
insert into t_user values(2, 'lucy', '18766654234', NULL);

insert into t_user(name, phone) values
('mack', '4'), 
('jerry', '2'),
('test1', '3');

-- 查询表的数据
-- * 表示所有字段
select * from t_user;

-- 带条件where 查询
select * from t_user where character_length(phone)=1;


-- 开启事务
begin;

-- 删除数据
delete from t_user where character_length(phone)=1;

-- 回滚事务: 开启事务后，所有的DML（insert, update, delete）操作全部撤回
rollback;

-- 添加用户的口令数据
insert into t_user_login values(1, hex(aes_encrypt('disen666', '@520Disen!')));
insert into t_user_login values(2, hex(aes_encrypt('@disen520', '@520Disen!')));

-- 用户登录时查询语句
-- join 连接表，如果没有连接条件（on），结果则为m(左表的行数) * n (右表的行数) 
select a.* from t_user a 
join t_user_login  b on (a.id = b.user_id)
where a.name = 'disen' and  aes_decrypt(unhex(b.auth_string),'@520Disen!') = 'disen666'; 